
public class Demo8 {
	static Object locker=new Object();

	public static void fun() {
		synchronized (locker) {
			fun1();
		}
	}
	public static void fun1() {
		fun2();
	}
	public static void fun2() {
		fun3();
	}
	public static void fun3() {
		synchronized (locker) {
			//这样也会造成死锁，在fun3进行上加锁的时候，必须等到fun的锁进行释放
			//fun的锁什么时候释放呢？必须等到代码块执行完毕，但是代码块种对一个对象进行加锁
			//所以就必须得等待锁释放，造成死锁
		}
	}
	public static void main(String[] args) {

		Thread t=new Thread(()->{

		});
	}
}
